我看到Guava有String的isNullOrEmpty实用程序方法
|
|
我们有什么类似的 Lists吗? 就像是
|
|
这应该是等效的
|
|
此外,我们有什么类似的Arrays吗? 就像是
|
|
这应该是等效的
|
|
这种方法不存在于Guava,不要再钻牛角尖了!
我们不相信“null或empty”是一个你真正想要问一个集合的问题。
如果集合可能为null,并且null应该被视为与empty相同,那么得到所有的歧义,从前面的方式,像这样:
|
|
或者像这样(如果你喜欢):
|
|
之后,通常你可以只使用.isEmpty()
。 在调用naughty API后立即执行此操作,并且您将奇怪的事情放在了后面,而不是让它无限期地继续。
如果“null真的意味着空集合”没有返回给你,但传递给你,你的工作很容易:只是让一个NullPointerException
抛出,并使该调用者形成。
你会倾向于找到整个Guava 的一件事是,他们往往是非常反对null
s。 作者希望不鼓励你使用尽可能多的null
,并提供实用方法以使其更容易使用null
将对此目的适得其反。
如果你想使用Guava的范式,考虑这个集合(或数组)的源是否真的应该返回null
。 如果没有,考虑标记它@NonNull
并返回空集合而不是null
。 或者作为一个函数的参数,期望没有null值列表,请考虑使用Preconditions.checkNotNull
,如果一个null
(意外)传入,抛出一个异常。
如果null真的是合法的,list == null || list.isEmpty()
不是那么难。
在commons-collections中有一个CollectionUtils.isEmpty())。
Spring框架有专门的util类叫CollectionUtils
。 而你正在寻找的方法是:org.springframework.util.CollectionUtils.isEmpty
。 它对null和空集合返回true。
对于数组,有org.springframework.util.ObjectUtils.isEmpty
方法,它的行为非常相似。
Apache CollectionUtils 4有一个方法 CollectionUtils.emptyIfNull(),如果集合为null,则返回一个空列表。 这在foreach循环中非常有用,所以你不需要在迭代之前做一个空检查
我的解决方案是:MoreObjects.firstNonNull(list, Collections. emptyList())
我使用Guava MoreObjects与JDK集合。
|
|